package issr.market.controller;

import issr.market.db.DBController;
import issr.market.db.impl.DBControllerImpl;
import issr.market.model.Indici;
import issr.market.model.Prodotto;
import issr.market.services.CalcoloIndici;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;

@Result(name = "login", type = "redirectAction", params = {
		"actionName", "login" })
public class IndiciController extends AbstractController {

	private static final long serialVersionUID = -2443068950863034498L;
	
	private static Logger logger = Logger.getLogger(IndiciController.class);
	
	private List<Indici> model = new ArrayList<Indici>();
	private List<Indici> indiciList;
	private int totaliImmagazzinati;

	@Override
	public HttpHeaders index() {
		
		if(accessForbidden())
			return new DefaultHttpHeaders("login")
				.disableCaching();
		
		
		logger.info("Inizializzo View per Analista Indici");
		DBController dbController = new DBControllerImpl();
		
		indiciList = new ArrayList<Indici>();
		List<Prodotto> prodottiList = dbController.getProdotti();
		
		totaliImmagazzinati = new DBControllerImpl().getTotaleImmagazzinati();
		
		logger.info("Immagazzinati totali "+totaliImmagazzinati);
		for(Prodotto prodotto : prodottiList){
			
			Indici indice = CalcoloIndici.calcoloIndici(prodotto, totaliImmagazzinati);
			indiciList.add(indice);
			
		}
		
		logger.info("indiciList size: "+indiciList.size());
		return super.index();
	}

	public int getTotaliImmagazzinati() {
		return totaliImmagazzinati;
	}

	public void setTotaliImmagazzinati(int totaliImmagazzinati) {
		this.totaliImmagazzinati = totaliImmagazzinati;
	}

	public List<Indici> getIndiciList() {
		return indiciList;
	}

	public void setIndiciList(List<Indici> indiciList) {
		this.indiciList = indiciList;
	}
	
	public Object getModel(){
		return (indiciList!=null)? indiciList : model;
	}
	

}
